
export const lineOptions = (params, machineTypeId, date) => {
  let dataTime = []
  let machineTypePool = []

  params.forEach((item) => {
    if(!dataTime.includes(item.dataTime.slice(5))){
      dataTime.push(item.dataTime.slice(5))
    }
    let obj = {}
    obj[item.machineTypeId] = item.tenDayAst
    machineTypePool.push(item.machineTypeId)
  })

  const fixedValue = ['E_Q1', 'E_中位', 'E_均值', 'E_众数', '离散值', 'ST逻辑', '源设备ID', '产品料号']

  const tempTarget = [...new Set(machineTypePool), ...fixedValue]

  const target = {}

  const timePool = []

  target[fixedValue[0]] = []
  target[fixedValue[1]] = []
  target[fixedValue[2]] = []
  target[fixedValue[3]] = []
  target[fixedValue[4]] = []
  target[fixedValue[5]] = []
  target[fixedValue[6]] = []
  target[fixedValue[7]] = []

  params.forEach((item) => {
    tempTarget.forEach((val, idx, arr) => {
      if(item.machineTypeId === val) {
        if(!target[item.machineTypeId]){
          target[item.machineTypeId] = item.machineTypeId === '移栽机' || item.machineTypeId === '装载机' ? [`测试${item.tenDayAst}`] : [item.tenDayAst]

          //   target[fixedValue[0]] = [`测试${item.eQ1}`]
          //   target[fixedValue[1]] = [`测试${item.eQ2}`]
          //   target[fixedValue[2]] = [`测试${item.eAverage}`]
          //   target[fixedValue[3]] = [`测试${item.eMode}`]
          //   target[fixedValue[4]] = [`测试${item.tenDayeCv}`]
          //   target[fixedValue[5]] = [item.stLogic]
          //   target[fixedValue[6]] = [item.souceunit]
          //   target[fixedValue[7]] = [item.productId]
        } else {
          // target[item.machineTypeId].push(item.tenDayAst)
          item.machineTypeId === '移栽机' || item.machineTypeId === '装载机' ? target[item.machineTypeId].push(`测试${item.tenDayAst}`) : target[item.machineTypeId].push(item.tenDayAst)
          // target[fixedValue[0]].push(`测试${item.eQ1}`)
          // target[fixedValue[1]].push(`测试${item.eQ2}`)
          // target[fixedValue[2]].push(`测试${item.eAverage}`)
          // target[fixedValue[3]].push(`测试${item.eMode}`)
          // target[fixedValue[4]].push(`测试${item.tenDayeCv}`)
          // target[fixedValue[5]].push(item.stLogic)
          // target[fixedValue[6]].push(item.souceunit)
          // target[fixedValue[7]].push(item.productId)
        }

        if(!timePool.includes(item.dataTime)){ /* 获取当天主线的固定字段的值 */
          target[fixedValue[0]].push(`测试${item.eQ1}`)
          target[fixedValue[1]].push(`测试${item.eQ2}`)
          target[fixedValue[2]].push(`测试${item.eAverage}`)
          target[fixedValue[3]].push(`测试${item.eMode}`)
          target[fixedValue[4]].push(`测试${item.tenDayeCv}`)
          target[fixedValue[5]].push(item.stLogic)
          target[fixedValue[6]].push(item.souceunit)
          target[fixedValue[7]].push(item.productId)

          timePool.push(item.dataTime)
        }

      }
    })
  })

  const targetData = []
  const legendData = []

  for (let key in target) {
    if(!fixedValue.includes(key) && key !== '移栽机' && key !== '装载机'){
      legendData.push(key)
    }
    targetData.push({
      name: key,
      type:'line',
      data: target[key],
      smooth: true
    })
  }

  const fixedMainData = ['MBB线', '叠瓦线', 'ACF线'] /*固定主线*/

  let obj = {}
  targetData.length && targetData.forEach((item, index) => {
	if (fixedMainData.includes(item.name)) {
		obj = item
		targetData.splice(index, 1)
	    return
    }
  })
  targetData.unshift(obj)

  const enumColor = ['#fd87ab', '#11abff', '#ffdf33', '#968ade', '#c23531', '#2f4554', '#61a0a8', '#d48265', '#749f83', '#ca8622', '#48cda6']
  targetData.forEach((element, idx) => {
    element.itemStyle = {
      color: enumColor[idx]
    }
  })
  // const categoryData = ['23/09/01', '23/09/05', '23/09/06', '23/09/07', '23/09/08', '23/09/09', '23/09/10', '23/09/11', '23/09/12', '23/09/13', '23/09/14', '23/09/15', '23/09/16', '23/09/17', '23/09/18', '23/09/19', '23/09/20', '23/09/21', '23/09/22', '23/09/23', '23/09/24', '23/09/25', '23/09/26', '23/09/27', '23/09/28', '23/09/29', '23/09/30', '23/10/01', '23/10/02', '23/10/03', '23/10/04', '23/10/05', '23/10/06']
  // const data1_1 = [2.76, 2.72, 2.82, 2.8, 2.9, 2.8, 2.84, 2.8, 2.78, 2.86, 2.86, 2.9, 2.82, 2.78, 2.8, 2.84, 2.82, 2.86, 2.82, 2.76, 2.74, 2.74, 2.74, 2.72, 2.76, 2.72, 2.4, 2.74, 2.28, 2.76, 2.73, 2.72, 2.76]
  // const data2_1 = [2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72, 2, 2.72, 2.72, 2.72, 2.72, 2.72, 2.72]
  // const data2_2 = [0.15, 0.12, 0.2, 0.2, 0.24, 0.18, 0.2, 0.16, 0.16, -0.08, 0.2, 0.18, 0.18, 0.18, 0.18, 0.2, 0.18, 0.18, 0.2, 0.16, 0.14, 0.14, 0.12, 0.12, 0.15, 0.12, 0.2, 0.16, 0.12, 0.18, 0.14, 0.13, 0.19]

  const lineOption = {
    title: {
      text: `${machineTypeId}群 AST_10D 基准日别趋势（${date}）`,
      textStyle: {
        fontSize:'16px',
        fontWeight: 500
      }
    },
    legend: {
      right: '50',
      data: legendData.reverse(),
      selected: {
        '叠瓦线': true,
        '片花篮上': false,
        '印刷': false,
        '激光': false,
        '裂片机': false,
        '端子焊': false,
        '串花篮上': false
      }
    },
    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'cross'
      },
      borderWidth: 1,
      borderColor: '#ccc',
      padding: 10,
      textStyle: {
        color: '#000',
        fontSize: 12
      },
      formatter: function(params) {
        let str = ''
        params.forEach((item, idx, arr) => {
          if(typeof(item.data)=='string' && item.data.includes('测试')){
            item.data = item.data.substring(2)
          }
          // console.log(item, item.data)
          if(fixedValue.includes(item.seriesName)){
            str += `<span style="margin-left: 10px;">- </span>${item.seriesName}<span style="float: right; margin-left: 50px;">${item.data}</span>`
          } else {
            str += `${item.marker}${item.seriesName}<span style="float: right; margin-left: 50px;">${item.data}</span>`
          }
          // if(Array.isArray(item.data) && item.seriesType !== 'bar'){
          //   /**
          //    * 数据分割 splitData() 时 为了显示两种颜色 将开盘/收盘项根据 colourFlag 进行顺序调整
          //    * 这样在数据 tooltip 时候想要展示的顺序不变（Q1、中位、最小、Q3）
          //    * 绿色K图 → "#00da3c" (交换了开盘和收盘的数据)
          //    * 红色K图 → "#ec0000" （正常数据）
          //   */
          //   str += `
          //     <br/> <span style="display:inline-block;margin-left:6px;margin-right:4px;border-radius:6px;width:6px;height:6px;background-color:${item.color};"></span> Q1 <span style="float: right;">${item.color === '#ec0000' ? item.data[1] : item.data[2]}</span>

          //     <br/> <span style="display:inline-block;margin-left:6px;margin-right:4px;border-radius:6px;width:6px;height:6px;background-color:${item.color};"></span> 中位 <span style="float: right;">${item.color === '#ec0000' ? item.data[2] : item.data[1]}</span>

          //     <br/> <span style="display:inline-block;margin-left:6px;margin-right:4px;border-radius:6px;width:6px;height:6px;background-color:${item.color};"></span> 最小 <span style="float: right;">${item.data[3]}</span>

          //     <br/> <span style="display:inline-block;margin-left:6px;margin-right:4px;border-radius:6px;width:6px;height:6px;background-color:${item.color};"></span> Q3 <span style="float: right;">${item.data[4]}</span>

          //     `
          // }
          str += idx === params.length - 1 ? '': '<br/>'
        })
        return str
      }
    },
    axisPointer: {
      link: [
        {
          xAxisIndex: 'all'
        }
      ],
      label: { // 文本标签的背景颜色
        backgroundColor: '#777'
      }
    },
    toolbox: {
      feature: {
        saveAsImage: {}, // 保存图片
        brush: {
          type: ['']
        }
      }
    },
    grid: {
      left: '4%',
      right: '0',
      top: '5%',
      height: '30%'
    },
    xAxis:{
      type: 'category',
      data: dataTime,
      axisLabel: {
        interval: 0, //隔几项显示一个标签
        rotate: "45" //标签倾斜的角度，旋转的角度是-90到90度
      }
    },
    yAxis:{
      type:'value',
      splitLine: { show: false },
      min: 'dataMin'
      // min: function(value) {//取最小值向下取整为最小刻度
      //   return (value.min - 0.05).toFixed(2)
      // }
    },
    series: targetData
  }

  return {
    lineOption
  }
}